mutex, WaitForSingleObject a ReleaseMutex
Otázka od: Karel Plechota
8. 6. 2004 10:25
zdravim,
mam jen drobny dotaz, zkousel jsem v jednom threadu nekolikrat po sobe zavolat
WaitForSingleObject pro mutex a pak jedenkrat v tom samem threadu zavolat
ReleaseMutex. WaitForSingleObject proslo vzdy ale ReleaseMutex neuvolnilo
mutex. Teprve az pote co jsem zavolal ReleaseMutex tolikrat kolikrat jsem volal
WaitForSingleObject se mutex uvolnil a jiny thread ziskal jeho vlastnictvi.
Hm jen me zajimalo proc tomu tak je, takhle podobne by se meli chovat semafory
a ne mutexy nebo se pletu? Mam se vyvarovat toho abych v jednom vlakne volal
WaitForSingleObject bez ReleaseMutex?
diky
Odpovedá: Petr Fejfar
8. 6. 2004 10:44
Karel Plechota wrote:
> mam jen drobny dotaz, zkousel jsem v jednom threadu nekolikrat po
> sobe zavolat WaitForSingleObject pro mutex a pak jedenkrat v tom
> samem threadu zavolat ReleaseMutex. WaitForSingleObject proslo vzdy
> ale ReleaseMutex neuvolnilo mutex. Teprve az pote co jsem zavolal
> ReleaseMutex tolikrat kolikrat jsem volal WaitForSingleObject se
> mutex uvolnil a jiny thread ziskal jeho vlastnictvi.
viz doc:
While a thread has ownership of a mutex, it can specify the same mutex in
additional wait-function calls without blocking its execution. This prevents
a thread from deadlocking itself while waiting for a mutex that it already
owns. However, to release its ownership, the thread must call ReleaseMutex
once for each time that the mutex satisfied a wait.
HTH, pf